#pragma once
#include <stdarg.h>
#include <stdio.h>

#define DEBUG 1

#ifdef DEBUG

/*  若不加 do ... while(0) 在进行条件判断时(只有1句话)，省略了{}，就会出现语法错误
*	if
*		xxxx
*	else
*		xxxx
*	宏被替换后，在 else 前面会出现一个 ; ---> 语法错误
*/

#define Log(type, fmt, args...) \
	do{\
		printf("[%s: %s@%s, line: %d]...\n ## LogInfo: ", type, __FILE__, __FUNCTION__, __LINE__);\
		printf(fmt, ##args);\
		printf("\n\n");\
	}while(0)

#define LogDebug(fmt, args...) Log("DEBUG", fmt, ##args)
#define LogError(fmt, args...) do{ Log("ERROR", fmt, ##args); exit(0); }while(0)

#else

#define Log(type, fmt, args...)
#define LogDebug(fmt, args...)
#define LogError(fmt, args...)

#endif